Chapter 12: Intro Geospatial - Vector

Author
Affiliation
Published

December 10, 2025

Geospatial data in R - Vector

The following activity is available as a template github repository at the following link: https://github.com/VT-Hydroinformatics/12-Intro_Geospatial_Vector

For more: https://datacarpentry.org/r-raster-vector-geospatial/

Much of this is adapted from: https://geocompr.robinlovelace.net/index.html Chapter 8

This demo uses data from the CAMELS dataset (full ref below) https://ral.ucar.edu/solutions/products/camels

A. Newman; K. Sampson; M. P. Clark; A. Bock; R. J. Viger; D. Blodgett, 2014. A large-sample watershed-scale hydrometeorological dataset for the contiguous USA. Boulder, CO: UCAR/NCAR. https://dx.doi.org/10.5065/D6MW2F4D

library(tidyverse)
library(sf)
library(tmap)    # for static and interactive maps
library(leaflet) # for interactive maps

theme_set(theme_classic())
Warning message:
"package 'tidyverse' was built under R version 4.3.3"
Warning message:
"package 'readr' was built under R version 4.3.3"
Warning message:
"package 'dplyr' was built under R version 4.3.3"
Warning message:
"package 'forcats' was built under R version 4.3.3"
Warning message:
"package 'lubridate' was built under R version 4.3.3"
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   4.0.0     ✔ tibble    3.2.1
✔ lubridate 1.9.4     ✔ tidyr     1.3.0
✔ purrr     1.0.2     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
Warning message:
"package 'sf' was built under R version 4.3.3"
Linking to GEOS 3.11.2, GDAL 3.8.2, PROJ 9.3.1; sf_use_s2() is TRUE

Warning message:
"package 'leaflet' was built under R version 4.3.3"

Goals

Our goals for this chapter are just to see some of the ways we can wrangle and plot vector spatial data using R. This is by no means the only way and is not an exhaustive demonstration of the packages loaded, but it’ll get us started.

First, we need to define raster and vector spatial data.

Check out the images below for two examples of the same data represented as raster data or vector data.

Vector: Points, lines, polygons, boundaries are crisp regardless of scale Raster: Grid of same sized cells, vales in cells, cell size = resolution (smaller cells, higher resolution)

Raster vs. Vector 1

Figure 1: Raster vs. Vector 1

Raster vs. Vector 2

Figure 2: Raster vs. Vector 2

Questions from these two images:

What are the advantages/disadvantages of raster/vector for each? Which is best to show on a map for each?  *For elevation, which would be better for calculating slope? 

So, today we are sticking to vector data, but then we will be deal primarily with raster elevation data.

Intro to tmap

We are going to make maps mostly with tmap. But there are several other options (ggplot, leaflet, etc).

Let’s look at how tmap works. It uses the same syntax as ggplot: the grammar of graphics.

First we want to set tmap to static map mode. This is what we would want if we were making maps for a manuscript or slides. You can also make interactive maps with tmap, which we will show later. We will also set the check.and.fix option in tmap_options to TRUE, we need to do this for the data we are using, but it isn’t always necessary.

Second, we will read in our data. We’ll read in the “smallerws” shapefile from the CAMELS dataset and another shapefile of the outline of US states. To read in the shapefiles we will use st_read() from the sf package.

Note that each of these shapefiles is in a separate folder and contains several files. You must have all of those files for the shapefile to work. *yes: “A shapefile” is actually several files. Silly? Maybe. The cause of much confusion when emailing someone “a shapefile”? Definitely.

Finally we will read in a csv called gauge information that has some extra info we will join to the watershed shapefile later.

Once that is all done, we will look at the watershed data to see what is available in the shapefile attribute table.

What extra information does the data have beyond a regular R object? Play around with it, can you reference columns in the table the same way you would with a regular object?

#make sure tmap is in static map mode
tmap_mode("plot")
ℹ tmap modes "plot" - "view"
ℹ toggle with `tmap::ttm()`
This message is displayed once per session.
#the CAMELS shapefile throws an error about having 
#invalid polygons, this line allows it to plot
tm_check_fix()

#Read shapefiles
watersheds <- st_read("small_ws/smallerws.shp")
[nothing to show] no data layers defined
Reading layer `smallerws' from data source 
  `C:\Users\AbnerBogan\Code\12-Intro_Geospatial_Vector\small_ws\smallerws.shp' 
  using driver `ESRI Shapefile'
Simple feature collection with 671 features and 9 fields
Geometry type: MULTIPOLYGON
Dimension:     XY
Bounding box:  xmin: -124.4377 ymin: 26.96621 xmax: -67.69059 ymax: 48.99931
Geodetic CRS:  +proj=longlat +datum=NAD83 +no_defs
states <- st_read("cb_2018_us_state_20m/cb_2018_us_state_20m.shp")
Reading layer `cb_2018_us_state_20m' from data source 
  `C:\Users\AbnerBogan\Code\12-Intro_Geospatial_Vector\cb_2018_us_state_20m\cb_2018_us_state_20m.shp' 
  using driver `ESRI Shapefile'
Simple feature collection with 52 features and 9 fields
Geometry type: MULTIPOLYGON
Dimension:     XY
Bounding box:  xmin: -179.1743 ymin: 17.91377 xmax: 179.7739 ymax: 71.35256
Geodetic CRS:  NAD83
gageinfo <- read_csv("gauge information.csv")
Rows: 672 Columns: 7
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr (3): HUC_02, GAGE_ID, GAGE_NAME
dbl (4): LAT, LONG, DRAINAGE_AREA_KM2, Elevation_m

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
#look at the watersheds shapefile data
print(head(watersheds))
Simple feature collection with 6 features and 9 fields
Geometry type: MULTIPOLYGON
Dimension:     XY
Bounding box:  xmin: -71.34071 ymin: 44.59213 xmax: -67.69059 ymax: 47.31557
Geodetic CRS:  +proj=longlat +datum=NAD83 +no_defs
   hru_id ann_P   lon_cen  lat_cen       AREA elev_mean ave_T july_T Perimeter
1 1013500     0 -68.56551 47.01169 2303988087  277.4935    NA     NA    647993
2 1022500     0 -68.07313 44.79691  620387273  103.6042    NA     NA    312624
3 1030500     0 -68.14985 45.80527 3676154745  174.4339    NA     NA    662248
4 1031500     0 -69.58119 45.23568  766544703  304.7435    NA     NA    309614
5 1047000     0 -70.16213 44.98744  904956194  379.7800    NA     NA    310157
6 1052500     0 -71.17197 44.96168  396110305  646.0736    NA     NA    172588
                        geometry
1 MULTIPOLYGON (((-68.06259 4...
2 MULTIPOLYGON (((-67.97836 4...
3 MULTIPOLYGON (((-68.09162 4...
4 MULTIPOLYGON (((-69.31629 4...
5 MULTIPOLYGON (((-70.10847 4...
6 MULTIPOLYGON (((-71.10862 4...

Let’s make a map showing the watersheds data. Each watershed has coordinates to draw it in the dataset, and tmap knows how to deal with that. It uses the same format as ggplot, but instead of ggplot() you will use tm_shape(). Then the geoms are prefixed tm_, so we will use tm_fill to show a map of the watersheds filled in with a color.

# Pass the watershed data to tmap and fill the polygons 
tm_shape(watersheds) +
  tm_fill()

If we use tm_borders instead, it will just outline the watersheds.

# Add border layer to shape
tm_shape(watersheds) +
  tm_borders()

That’s fun, and maybe you can guess what country we are in based on the distribution of watersheds, but it would be better to show some geopolitical boundaries to get a sense of where we are.

To do this, we will use a second tm_shape and show the states data we read in on the plot as well. Just like in ggplot, you can use multiple tm_ functions to show multiple datsets on the same map.

# Add border layer to shape
tm_shape(watersheds) +
  tm_fill() +
  tm_shape(states)+
  tm_borders()

You can also show the SAME data with multiple geoms. Let’s add tm_borders under the watershed portion of the map and before the states portion so we get fill and borders on out watersheds.

# Add fill and border layers to shape
tm_shape(watersheds) +
  tm_fill() +
  tm_borders()+
  tm_shape(states)+
  tm_borders()

Okay, this is starting to look like a map! But we need to add elements to make it better.

We could do this all in one statement, but you can also save your existing map as a kind of “basemap” and then add to it later, just like with a ggplot object. We will save the above map as usa.

Then we can use several built in geometries in tmap to add a compass, scale, and title. Note the syntax for specifying the position of the objects. Again, you could do this all in one statement too if you wanted.

#Save basic map object as "usa"
usa <- tm_shape(watersheds) +
  tm_fill(col = "lightblue")+
  tm_shape(states)+
  tm_borders()
   
usa + 
  tm_compass(type = "8star", position = c("right", "bottom")) +
  tm_scale_bar(position = c("left", "bottom"))+
  tm_layout(title = "CAMELS Watersheds", title.position = c("right", "TOP"))
! `tm_scale_bar()` is deprecated. Please use `tm_scalebar()` instead.
[v3->v4] `tm_layout()`: use `tm_title()` instead of `tm_layout(title = )`

Below is an example of how to edit the “symbology” of the map. In other words, we want to color each of the polygons depending on a variable. Here we make the watersheds darker blue if they have a higher elevation.

The syntax below is basically (pseudo code):

Represent watersheds as shapes +
color the shapes based on elev_mean, use 10 colors, use the Blues palette
add a legend in the bottom right, add some space for the title, define the title, position the title
add a compass at the bottom left
add a scale bar at the bottom left

tm_shape(watersheds) + 
  tm_fill(col = "elev_mean", n = 10, palette = "Blues")+
  tm_borders(lwd = 0.2)+
  tm_shape(states)+
  tm_borders()+
  tm_layout(legend.position = c("right", "bottom"), 
            inner.margins = 0.1,
            title = "Mean Elevation", 
            title.position = c("center", "TOP"))+
  tm_compass(type = "8star", position = c("left", "bottom")) +
  tm_scale_bar(position = c("left", "bottom"))


── tmap v3 code detected ───────────────────────────────────────────────────────

[v3->v4] `tm_tm_polygons()`: migrate the argument(s) related to the scale of
the visual variable `fill` namely 'n', 'palette' (rename to 'values') to
fill.scale = tm_scale(<HERE>).
[v3->v4] `tm_polygons()`: use 'fill' for the fill color of polygons/symbols
(instead of 'col'), and 'col' for the outlines (instead of 'border.col').
This message is displayed once every 8 hours.
[v3->v4] `tm_layout()`: use `tm_title()` instead of `tm_layout(title = )`
! `tm_scale_bar()` is deprecated. Please use `tm_scalebar()` instead.
[cols4all] color palettes: use palettes from the R package cols4all. Run
`cols4all::c4a_gui()` to explore them. The old palette name "Blues" is named
"brewer.blues"
Multiple palettes called "blues" found: "brewer.blues", "matplotlib.blues". The first one, "brewer.blues", is returned.

Data wrangling with tidyverse principles

You can use the same techniques as with other data to change or filter the spatial data. Below we filter to show just watershed number 3164000, which will be in quotes because the column is a character datatype. Note when we looked at the watersheds object above there is a column called hru_id for the watershed ids.

watersheds |> filter(hru_id == "3164000") |>
  tm_shape() +
  tm_fill() +
  tm_borders() 

Add non-spatial data to spatial data with a join

We have been using the watersheds shapefile. The other dataset we read in “gageinfo” has more data, but it is just a regular tibble, not a geospatial file.

We need to attach data from gageinfo object to the watersheds geospatial object based on watershed ID. How in the world will we do that?

A JOIN!!

In the watersheds shapefile the watershed ids are in a column called hru_id and in gageinfo tibble they are in a column called GAGE_ID. So when we do the join, we need to tell R that these columns are the same and we want to use them to match the values. We will do a left join to accomplish this.

BUT. TWIST!

Let’s look at the first value in hru_id in watersheds: “1013500” Now the same one in GAGE_ID in gageinfo: “01013500”

They’re both the same IDs, but one has a leading zero. And because they are character format, “1013500” does not equal “01013500”. We can address this a couple of ways, but the best is probably to keep them as characters, but add a leading 0 to the hru_id column.

We will do this by creating a new column with a mutate and using the paste0() function to add a leading 0. To make the join easier, we will also give this new column the same name as in the gageinfo tibble: “GAGE_ID”.

To review joins, check out chapter @ref(getdata)

#add leading 0 to hru_id column and save it as GAGE_ID
watersheds <- watersheds |>
  mutate(GAGE_ID = paste0("0", hru_id))

#join watersheds and gageinfo using the GAGE_ID column as the key
watersheds_info <- watersheds |>
  left_join(gageinfo, by = "GAGE_ID")

print(head(watersheds_info))
Simple feature collection with 6 features and 16 fields
Geometry type: MULTIPOLYGON
Dimension:     XY
Bounding box:  xmin: -71.34071 ymin: 44.59213 xmax: -67.69059 ymax: 47.31557
Geodetic CRS:  +proj=longlat +datum=NAD83 +no_defs
   hru_id ann_P   lon_cen  lat_cen       AREA elev_mean ave_T july_T Perimeter
1 1013500     0 -68.56551 47.01169 2303988087  277.4935    NA     NA    647993
2 1022500     0 -68.07313 44.79691  620387273  103.6042    NA     NA    312624
3 1030500     0 -68.14985 45.80527 3676154745  174.4339    NA     NA    662248
4 1031500     0 -69.58119 45.23568  766544703  304.7435    NA     NA    309614
5 1047000     0 -70.16213 44.98744  904956194  379.7800    NA     NA    310157
6 1052500     0 -71.17197 44.96168  396110305  646.0736    NA     NA    172588
   GAGE_ID HUC_02                                    GAGE_NAME      LAT
1 01013500     01             Fish River near Fort Kent, Maine 47.23739
2 01022500     01      Narraguagus River at Cherryfield, Maine 44.60797
3 01030500     01  Mattawamkeag River near Mattawamkeag, Maine 45.50097
4 01031500     01 Piscataquis River near Dover-Foxcroft, Maine 45.17501
5 01047000     01   Carrabassett River near North Anson, Maine 44.86920
6 01052500     01    Diamond River near Wentworth Location, NH 44.87739
       LONG DRAINAGE_AREA_KM2 Elevation_m                       geometry
1 -68.58264           2252.70      250.31 MULTIPOLYGON (((-68.06259 4...
2 -67.93524            573.60       92.68 MULTIPOLYGON (((-67.97836 4...
3 -68.30596           3676.17      143.80 MULTIPOLYGON (((-68.09162 4...
4 -69.31470            769.05      247.80 MULTIPOLYGON (((-69.31629 4...
5 -69.95510            909.10      310.38 MULTIPOLYGON (((-70.10847 4...
6 -71.05749            383.82      615.70 MULTIPOLYGON (((-71.10862 4...

And now we can plot this formerly non-spatial data on our map.

In this case, we can now add the name of the watershed to the map rather than the number.

#now the gageinfo columns are available for us to use when mapping
watersheds_info |> filter(hru_id == "3164000") |>
  tm_shape() +
  tm_fill() +
  tm_borders() +
  tm_text("GAGE_NAME", size = 1) 

We can also subset vector data to create new datasets or plot. Below we will use filter statements to grab all the polygons in Virginia from the watersheds shapefile and then the Virginia state outline from the states shapefile.

The method we will use for getting the Virginia watersheds is a little new. We are going to use the grepl() function to grab any gages that include the text “, VA” since there isn’t a state column, but the watershed names include the state.

Why are we doing “, VA” and not just “VA”? Good question!

“, VA” will most likely only show up in gage names that are in Virginia because they’ll be in the format “Gage name, VA”. If we just say “VA” we might get some gages that have “VA” as part of their name but are not in Virginia.

Once we successfully filter to Virginia, we will then make a nice map of the CAMELS watersheds in Virginia!

va_watersheds <- filter(watersheds_info, grepl(", VA", GAGE_NAME))
va_outline <- filter(states, NAME == "Virginia")

va_outline |>
  tm_shape() +
  tm_borders() + 
  tm_shape(va_watersheds) +
  tm_fill() +
  tm_borders() +
  tm_layout(inner.margins = 0.1,
            title = "VA CAMELS Watersheds", 
            title.position = c("left", "TOP"))+
  tm_compass(type = "8star", position = c("right", "top")) +
  tm_scale_bar(position = c("left", "top"))
[v3->v4] `tm_layout()`: use `tm_title()` instead of `tm_layout(title = )`
! `tm_scale_bar()` is deprecated. Please use `tm_scalebar()` instead.

In addition to filtering, we can use the data in the attribute table to calculate additional parameters, just like with a normal object. Below we calculate the ratio of Area to Perimeter by changing the perimeter datatype to numeric and then dividing area by perimeter.

va_watersheds <- va_watersheds |> 
  mutate(PerimeterNum = as.numeric(Perimeter),
         Area_Perimeter = AREA / PerimeterNum) 

print(head(va_watersheds))
Simple feature collection with 6 features and 18 fields
Geometry type: MULTIPOLYGON
Dimension:     XY
Bounding box:  xmin: -79.32293 ymin: 38.31301 xmax: -77.55629 ymax: 39.2801
Geodetic CRS:  +proj=longlat +datum=NAD83 +no_defs
   hru_id ann_P   lon_cen  lat_cen      AREA elev_mean ave_T july_T Perimeter
1 1620500     0 -79.27321 38.37592  61339485  913.1406    NA     NA     69535
2 1632000     0 -78.96078 38.70073 547286614  605.6940    NA     NA    175812
3 1632900     0 -78.72713 38.54450 249206633  410.4016    NA     NA    134796
4 1634500     0 -78.44939 39.06919 264494917  441.7808    NA     NA    151377
5 1638480     0 -77.67379 39.20060 233835164  175.1224    NA     NA    112488
6 1644000     0 -77.80391 38.99276 859599217  187.0871    NA     NA    237588
   GAGE_ID HUC_02                                GAGE_NAME      LAT      LONG
1 01620500     02         NORTH RIVER NEAR STOKESVILLE, VA 38.33763 -79.24004
2 01632000     02 N F SHENANDOAH RIVER AT COOTES STORE, VA 38.63706 -78.85280
3 01632900     02          SMITH CREEK NEAR NEW MARKET, VA 38.69345 -78.64279
4 01634500     02          CEDAR CREEK NEAR WINCHESTER, VA 39.08122 -78.32945
5 01638480     02        CATOCTIN CREEK AT TAYLORSTOWN, VA 39.25455 -77.57638
6 01644000     02            GOOSE CREEK NEAR LEESBURG, VA 39.01955 -77.57749
  DRAINAGE_AREA_KM2 Elevation_m                       geometry PerimeterNum
1             44.74      786.35 MULTIPOLYGON (((-79.24689 3...        69535
2            543.36      543.76 MULTIPOLYGON (((-78.98026 3...       175812
3            245.05      417.29 MULTIPOLYGON (((-78.85841 3...       134796
4            263.98      344.44 MULTIPOLYGON (((-78.37821 3...       151377
5            232.00      155.98 MULTIPOLYGON (((-77.62354 3...       112488
6            859.17      187.25 MULTIPOLYGON (((-77.62354 3...       237588
  Area_Perimeter
1       882.1383
2      3112.9082
3      1848.7688
4      1747.2596
5      2078.7565
6      3618.0245

Now we can plot our newly calculated data by controlling color with that new column name.

va_outline |>
  tm_shape() +
  tm_borders() + 
  tm_shape(va_watersheds) +
  tm_fill(col = "Area_Perimeter", n = 10, palette = "Reds") +
  tm_borders()+
  tm_layout(inner.margins = 0.12,
            title = "VA CAMELS Watersheds", 
            title.position = c("left", "TOP"))+
  tm_compass(type = "8star", position = c("right", "top")) +
  tm_scale_bar(position = c("right", "bottom"))


── tmap v3 code detected ───────────────────────────────────────────────────────

[v3->v4] `tm_tm_polygons()`: migrate the argument(s) related to the scale of
the visual variable `fill` namely 'n', 'palette' (rename to 'values') to
fill.scale = tm_scale(<HERE>).
[v3->v4] `tm_layout()`: use `tm_title()` instead of `tm_layout(title = )`
! `tm_scale_bar()` is deprecated. Please use `tm_scalebar()` instead.
[cols4all] color palettes: use palettes from the R package cols4all. Run
`cols4all::c4a_gui()` to explore them. The old palette name "Reds" is named
"brewer.reds"
Multiple palettes called "reds" found: "brewer.reds", "matplotlib.reds". The first one, "brewer.reds", is returned.

Plot maps side by side

Just like we can use facets in ggplot, we can use facets to show multiple maps. Below we color our map by AREA and elev_mean and put them next to each other using tm_facets.

facets = c("AREA", "elev_mean")

tm_shape(va_watersheds) + 
  tm_polygons(facets) + 
  tm_facets(ncol = 2, sync = FALSE)

Built in styles, like themes in ggplot

Tmap also has built in styles, which are like themes in ggplot. We can use these styles with tm_style. Try “classic”, “cobalt”, or “col_blind” below.

va_outline |>
  tm_shape() +
  tm_borders() + 
  tm_shape(va_watersheds) +
  tm_fill(col = "Area_Perimeter", n = 10, palette = "Reds") +
  tm_borders()+
  tm_layout(inner.margins = 0.12,
            title = "VA CAMELS Watersheds", 
            title.position = c("left", "TOP"))+
  tm_compass(type = "8star", position = c("right", "top")) +
  tm_scale_bar(position = c("right", "bottom"))+
  tm_style("classic") #try cobalt, bw, col_blind


── tmap v3 code detected ───────────────────────────────────────────────────────

[v3->v4] `tm_tm_polygons()`: migrate the argument(s) related to the scale of
the visual variable `fill` namely 'n', 'palette' (rename to 'values') to
fill.scale = tm_scale(<HERE>).
[v3->v4] `tm_layout()`: use `tm_title()` instead of `tm_layout(title = )`
! `tm_scale_bar()` is deprecated. Please use `tm_scalebar()` instead.
[cols4all] color palettes: use palettes from the R package cols4all. Run
`cols4all::c4a_gui()` to explore them. The old palette name "Reds" is named
"brewer.reds"
Multiple palettes called "reds" found: "brewer.reds", "matplotlib.reds". The first one, "brewer.reds", is returned.

Interactive Maps

tmap

You can also generate maps that you can interact with, as opposed to static maps, that we have been using before. If you are generating a map for an app or webpage, this may be a good choice. But for a pdf report, the static maps are more appropriate.

In tmap all you have to do is run tmap_mode(“view”) and it will create an interactive map with the exact same syntax! To switch back to a static map, run tmap_mode(“plot”)

Also in this chunk we see how to add a basemap to a tmap object, using tm_basemap.

tmap_mode("view")

usa <- tm_shape(watersheds_info) +
  tm_fill(col = "lightblue", alpha = 0.3)+
  tm_borders()+
  tm_shape(states)+
  tm_borders() +
  tm_layout(title = "CAMELS Watersheds", title.position = c("right", "TOP"))

usa_tmap_interactive <- usa + tm_basemap(server = "OpenTopoMap")

# # Save the interactive map to a temporary HTML file
# usa_tmap_interactive_fp <- "images/tmap_interactive.html"
# tmap_save(usa_tmap_interactive, filename = usa_tmap_interactive_fp)

usa_tmap_interactive
print(str(usa_tmap_interactive))
ℹ tmap modes "plot" - "view"


── tmap v3 code detected ───────────────────────────────────────────────────────

[v3->v4] `tm_polygons()`: use `fill_alpha` instead of `alpha`.
[v3->v4] `tm_layout()`: use `tm_title()` instead of `tm_layout(title = )`
List of 8
 $ :List of 7
  ..$ shp     :Classes 'sf' and 'data.frame':   671 obs. of  17 variables:
  .. ..$ hru_id           : chr [1:671] "1013500" "1022500" "1030500" "1031500" ...
  .. ..$ ann_P            : num [1:671] 0 0 0 0 0 0 0 0 0 0 ...
  .. ..$ lon_cen          : num [1:671] -68.6 -68.1 -68.1 -69.6 -70.2 ...
  .. ..$ lat_cen          : num [1:671] 47 44.8 45.8 45.2 45 ...
  .. ..$ AREA             : num [1:671] 2.30e+09 6.20e+08 3.68e+09 7.67e+08 9.05e+08 ...
  .. ..$ elev_mean        : num [1:671] 277 104 174 305 380 ...
  .. ..$ ave_T            : num [1:671] NA NA NA NA NA NA NA NA NA NA ...
  .. ..$ july_T           : num [1:671] NA NA NA NA NA NA NA NA NA NA ...
  .. ..$ Perimeter        : chr [1:671] "647993" "312624" "662248" "309614" ...
  .. ..$ GAGE_ID          : chr [1:671] "01013500" "01022500" "01030500" "01031500" ...
  .. ..$ HUC_02           : chr [1:671] "01" "01" "01" "01" ...
  .. ..$ GAGE_NAME        : chr [1:671] "Fish River near Fort Kent, Maine" "Narraguagus River at Cherryfield, Maine" "Mattawamkeag River near Mattawamkeag, Maine" "Piscataquis River near Dover-Foxcroft, Maine" ...
  .. ..$ LAT              : num [1:671] 47.2 44.6 45.5 45.2 44.9 ...
  .. ..$ LONG             : num [1:671] -68.6 -67.9 -68.3 -69.3 -70 ...
  .. ..$ DRAINAGE_AREA_KM2: num [1:671] 2253 574 3676 769 909 ...
  .. ..$ Elevation_m      : num [1:671] 250.3 92.7 143.8 247.8 310.4 ...
  .. ..$ geometry         :sfc_MULTIPOLYGON of length 671; first list element: List of 1
  .. .. ..$ :List of 1
  .. .. .. ..$ : num [1:877, 1:2] -68.1 -68.1 -68.1 -68 -68 ...
  .. .. ..- attr(*, "class")= chr [1:3] "XY" "MULTIPOLYGON" "sfg"
  .. ..- attr(*, "sf_column")= chr "geometry"
  .. ..- attr(*, "agr")= Factor w/ 3 levels "constant","aggregate",..: NA NA NA NA NA NA NA NA NA NA ...
  .. .. ..- attr(*, "names")= chr [1:16] "hru_id" "ann_P" "lon_cen" "lat_cen" ...
  ..$ is.main : logi NA
  ..$ crs     : NULL
  ..$ bbox    :List of 1
  .. ..$ x: NULL
  ..$ unit    : NULL
  ..$ filter  : NULL
  ..$ shp_name: chr "watersheds_info"
  ..- attr(*, "class")= chr [1:3] "tm_shape" "tm_element" "list"
 $ :List of 17
  ..$ layer         : chr [1:2] "fill" "polygons"
  ..$ trans.fun     :function (shpTM, ord__, plot.order, args, scale)  
  ..$ trans.args    :List of 1
  .. ..$ polygons.only: chr "ifany"
  ..$ trans.aes     : list()
  ..$ trans.apply_to: chr "this"
  ..$ mapping.aes   :List of 6
  .. ..$ fill      :List of 6
  .. .. ..$ aes   : chr "fill"
  .. .. ..$ value :List of 1
  .. .. .. ..$ lightblue: chr "lightblue"
  .. .. .. ..- attr(*, "class")= chr "tmapStandard"
  .. .. ..$ scale :List of 21
  .. .. .. ..$ FUN             : chr "tmapScaleAuto"
  .. .. .. ..$ n               : num 5
  .. .. .. ..$ style           : chr "pretty"
  .. .. .. ..$ style.args      : list()
  .. .. .. ..$ breaks          : NULL
  .. .. .. ..$ interval.closure: chr "left"
  .. .. .. ..$ drop.levels     : logi FALSE
  .. .. .. ..$ midpoint        : NULL
  .. .. .. ..$ as.count        : logi NA
  .. .. .. ..$ values          : logi NA
  .. .. .. ..$ values.repeat   : logi FALSE
  .. .. .. ..$ values.range    : logi NA
  .. .. .. ..$ values.scale    : num 1
  .. .. .. ..$ value.na        : logi NA
  .. .. .. ..$ value.null      : logi NA
  .. .. .. ..$ value.neutral   : logi NA
  .. .. .. ..$ labels          : NULL
  .. .. .. ..$ label.na        : chr "Missing"
  .. .. .. ..$ label.null      : logi NA
  .. .. .. ..$ label.format    : list()
  .. .. .. ..$ fun_pref        : chr "intervals"
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_scale_auto" "tm_scale" "list"
  .. .. ..$ legend:List of 11
  .. .. .. ..$ title      : logi NA
  .. .. .. ..$ orientation: chr "portrait"
  .. .. .. ..$ reverse    : logi FALSE
  .. .. .. ..$ na.show    : logi NA
  .. .. .. ..$ format     : list()
  .. .. .. ..$ called     : chr [1:5] "title" "orientation" "reverse" "na.show" ...
  .. .. .. ..$ xlab       : logi NA
  .. .. .. ..$ ylab       : logi NA
  .. .. .. ..$ group_id   : chr NA
  .. .. .. ..$ group_type : chr "tm_legend"
  .. .. .. ..$ z          : int NA
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_legend" "tm_component" "list"
  .. .. ..$ chart :List of 4
  .. .. .. ..$ show    : logi FALSE
  .. .. .. ..$ group_id: chr NA
  .. .. .. ..$ z       : int NA
  .. .. .. ..$ summary : chr "none"
  .. .. .. ..- attr(*, "class")= chr [1:4] "tm_chart_none" "tm_chart" "tm_component" "list"
  .. .. ..$ free  : logi NA
  .. .. ..- attr(*, "class")= chr [1:2] "tmapScale" "list"
  .. ..$ col       :List of 6
  .. .. ..$ aes   : chr "col"
  .. .. ..$ value :List of 1
  .. .. .. ..$ : chr "value.const"
  .. .. .. ..- attr(*, "class")= chr "tmapOption"
  .. .. ..$ scale :List of 1
  .. .. .. ..$ FUN: chr "tmapScaleAuto"
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_scale_auto" "tm_scale" "list"
  .. .. ..$ legend:List of 6
  .. .. .. ..$ title     : logi NA
  .. .. .. ..$ xlab      : logi NA
  .. .. .. ..$ ylab      : logi NA
  .. .. .. ..$ group_id  : chr NA
  .. .. .. ..$ group_type: chr "tm_legend"
  .. .. .. ..$ z         : int NA
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_legend" "tm_component" "list"
  .. .. ..$ chart :List of 4
  .. .. .. ..$ show    : logi FALSE
  .. .. .. ..$ group_id: chr NA
  .. .. .. ..$ z       : int NA
  .. .. .. ..$ summary : chr "none"
  .. .. .. ..- attr(*, "class")= chr [1:4] "tm_chart_none" "tm_chart" "tm_component" "list"
  .. .. ..$ free  : logi NA
  .. .. ..- attr(*, "class")= chr [1:2] "tmapScale" "list"
  .. ..$ lwd       :List of 6
  .. .. ..$ aes   : chr "lwd"
  .. .. ..$ value :List of 1
  .. .. .. ..$ : chr "value.const"
  .. .. .. ..- attr(*, "class")= chr "tmapOption"
  .. .. ..$ scale :List of 1
  .. .. .. ..$ FUN: chr "tmapScaleAuto"
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_scale_auto" "tm_scale" "list"
  .. .. ..$ legend:List of 6
  .. .. .. ..$ title     : logi NA
  .. .. .. ..$ xlab      : logi NA
  .. .. .. ..$ ylab      : logi NA
  .. .. .. ..$ group_id  : chr NA
  .. .. .. ..$ group_type: chr "tm_legend"
  .. .. .. ..$ z         : int NA
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_legend" "tm_component" "list"
  .. .. ..$ chart :List of 4
  .. .. .. ..$ show    : logi FALSE
  .. .. .. ..$ group_id: chr NA
  .. .. .. ..$ z       : int NA
  .. .. .. ..$ summary : chr "none"
  .. .. .. ..- attr(*, "class")= chr [1:4] "tm_chart_none" "tm_chart" "tm_component" "list"
  .. .. ..$ free  : logi NA
  .. .. ..- attr(*, "class")= chr [1:2] "tmapScale" "list"
  .. ..$ lty       :List of 6
  .. .. ..$ aes   : chr "lty"
  .. .. ..$ value :List of 1
  .. .. .. ..$ : chr "value.const"
  .. .. .. ..- attr(*, "class")= chr "tmapOption"
  .. .. ..$ scale :List of 1
  .. .. .. ..$ FUN: chr "tmapScaleAuto"
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_scale_auto" "tm_scale" "list"
  .. .. ..$ legend:List of 6
  .. .. .. ..$ title     : logi NA
  .. .. .. ..$ xlab      : logi NA
  .. .. .. ..$ ylab      : logi NA
  .. .. .. ..$ group_id  : chr NA
  .. .. .. ..$ group_type: chr "tm_legend"
  .. .. .. ..$ z         : int NA
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_legend" "tm_component" "list"
  .. .. ..$ chart :List of 4
  .. .. .. ..$ show    : logi FALSE
  .. .. .. ..$ group_id: chr NA
  .. .. .. ..$ z       : int NA
  .. .. .. ..$ summary : chr "none"
  .. .. .. ..- attr(*, "class")= chr [1:4] "tm_chart_none" "tm_chart" "tm_component" "list"
  .. .. ..$ free  : logi NA
  .. .. ..- attr(*, "class")= chr [1:2] "tmapScale" "list"
  .. ..$ fill_alpha:List of 6
  .. .. ..$ aes   : chr "fill_alpha"
  .. .. ..$ value :List of 1
  .. .. .. ..$ 0.3: num 0.3
  .. .. .. ..- attr(*, "class")= chr "tmapStandard"
  .. .. ..$ scale :List of 1
  .. .. .. ..$ FUN: chr "tmapScaleAuto"
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_scale_auto" "tm_scale" "list"
  .. .. ..$ legend:List of 6
  .. .. .. ..$ title     : logi NA
  .. .. .. ..$ xlab      : logi NA
  .. .. .. ..$ ylab      : logi NA
  .. .. .. ..$ group_id  : chr NA
  .. .. .. ..$ group_type: chr "tm_legend"
  .. .. .. ..$ z         : int NA
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_legend" "tm_component" "list"
  .. .. ..$ chart :List of 4
  .. .. .. ..$ show    : logi FALSE
  .. .. .. ..$ group_id: chr NA
  .. .. .. ..$ z       : int NA
  .. .. .. ..$ summary : chr "none"
  .. .. .. ..- attr(*, "class")= chr [1:4] "tm_chart_none" "tm_chart" "tm_component" "list"
  .. .. ..$ free  : logi NA
  .. .. ..- attr(*, "class")= chr [1:2] "tmapScale" "list"
  .. ..$ col_alpha :List of 6
  .. .. ..$ aes   : chr "col_alpha"
  .. .. ..$ value :List of 1
  .. .. .. ..$ : chr "value.const"
  .. .. .. ..- attr(*, "class")= chr "tmapOption"
  .. .. ..$ scale :List of 1
  .. .. .. ..$ FUN: chr "tmapScaleAuto"
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_scale_auto" "tm_scale" "list"
  .. .. ..$ legend:List of 6
  .. .. .. ..$ title     : logi NA
  .. .. .. ..$ xlab      : logi NA
  .. .. .. ..$ ylab      : logi NA
  .. .. .. ..$ group_id  : chr NA
  .. .. .. ..$ group_type: chr "tm_legend"
  .. .. .. ..$ z         : int NA
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_legend" "tm_component" "list"
  .. .. ..$ chart :List of 4
  .. .. .. ..$ show    : logi FALSE
  .. .. .. ..$ group_id: chr NA
  .. .. .. ..$ z       : int NA
  .. .. .. ..$ summary : chr "none"
  .. .. .. ..- attr(*, "class")= chr [1:4] "tm_chart_none" "tm_chart" "tm_component" "list"
  .. .. ..$ free  : logi NA
  .. .. ..- attr(*, "class")= chr [1:2] "tmapScale" "list"
  ..$ gpar          :List of 11
  .. ..$ fill      : chr "__fill"
  .. ..$ col       : chr "__col"
  .. ..$ shape     : logi NA
  .. ..$ size      : logi NA
  .. ..$ fill_alpha: chr "__fill_alpha"
  .. ..$ col_alpha : chr "__col_alpha"
  .. ..$ lty       : chr "__lty"
  .. ..$ lwd       : chr "__lwd"
  .. ..$ linejoin  : chr "round"
  .. ..$ lineend   : chr "round"
  .. ..$ pattern   : chr "fill"
  .. ..- attr(*, "class")= chr "tmapGpar"
  ..$ tpar          :List of 1
  .. ..$ area: chr "AREA"
  .. ..- attr(*, "class")= chr "tmapTpar"
  ..$ plot.order    :List of 5
  .. ..$ aes          : chr "lwd"
  .. ..$ reverse      : logi TRUE
  .. ..$ na.order     : chr "bottom"
  .. ..$ null.order   : chr "bottom"
  .. ..$ null.below.na: logi TRUE
  .. ..- attr(*, "class")= chr "tm_plot_order"
  ..$ mapping.args  : list()
  ..$ zindex        : logi NA
  ..$ group         : logi NA
  ..$ group.control : chr "check"
  ..$ popup.vars    : logi NA
  ..$ popup.format  : list()
  .. ..- attr(*, "class")= chr [1:2] "tmapLabelFormat" "list"
  ..$ hover         : logi NA
  ..$ id            : chr ""
  ..- attr(*, "class")= chr [1:4] "tm_aes_layer" "tm_layer" "tm_element" "list"
 $ :List of 17
  ..$ layer         : chr [1:2] "borders" "polygons"
  ..$ trans.fun     :function (shpTM, ord__, plot.order, args, scale)  
  ..$ trans.args    :List of 1
  .. ..$ polygons.only: chr "ifany"
  ..$ trans.aes     : list()
  ..$ trans.apply_to: chr "this"
  ..$ mapping.aes   :List of 6
  .. ..$ fill      :List of 6
  .. .. ..$ aes   : chr "fill"
  .. .. ..$ value :List of 1
  .. .. .. ..$ : chr "value.blank"
  .. .. .. ..- attr(*, "class")= chr "tmapOption"
  .. .. ..$ scale :List of 1
  .. .. .. ..$ FUN: chr "tmapScaleAuto"
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_scale_auto" "tm_scale" "list"
  .. .. ..$ legend:List of 6
  .. .. .. ..$ title     : logi NA
  .. .. .. ..$ xlab      : logi NA
  .. .. .. ..$ ylab      : logi NA
  .. .. .. ..$ group_id  : chr NA
  .. .. .. ..$ group_type: chr "tm_legend"
  .. .. .. ..$ z         : int NA
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_legend" "tm_component" "list"
  .. .. ..$ chart :List of 4
  .. .. .. ..$ show    : logi FALSE
  .. .. .. ..$ group_id: chr NA
  .. .. .. ..$ z       : int NA
  .. .. .. ..$ summary : chr "none"
  .. .. .. ..- attr(*, "class")= chr [1:4] "tm_chart_none" "tm_chart" "tm_component" "list"
  .. .. ..$ free  : logi NA
  .. .. ..- attr(*, "class")= chr [1:2] "tmapScale" "list"
  .. ..$ col       :List of 6
  .. .. ..$ aes   : chr "col"
  .. .. ..$ value :List of 1
  .. .. .. ..$ : chr "value.const"
  .. .. .. ..- attr(*, "class")= chr "tmapOption"
  .. .. ..$ scale :List of 1
  .. .. .. ..$ FUN: chr "tmapScaleAuto"
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_scale_auto" "tm_scale" "list"
  .. .. ..$ legend:List of 6
  .. .. .. ..$ title     : logi NA
  .. .. .. ..$ xlab      : logi NA
  .. .. .. ..$ ylab      : logi NA
  .. .. .. ..$ group_id  : chr NA
  .. .. .. ..$ group_type: chr "tm_legend"
  .. .. .. ..$ z         : int NA
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_legend" "tm_component" "list"
  .. .. ..$ chart :List of 4
  .. .. .. ..$ show    : logi FALSE
  .. .. .. ..$ group_id: chr NA
  .. .. .. ..$ z       : int NA
  .. .. .. ..$ summary : chr "none"
  .. .. .. ..- attr(*, "class")= chr [1:4] "tm_chart_none" "tm_chart" "tm_component" "list"
  .. .. ..$ free  : logi NA
  .. .. ..- attr(*, "class")= chr [1:2] "tmapScale" "list"
  .. ..$ lwd       :List of 6
  .. .. ..$ aes   : chr "lwd"
  .. .. ..$ value :List of 1
  .. .. .. ..$ : chr "value.const"
  .. .. .. ..- attr(*, "class")= chr "tmapOption"
  .. .. ..$ scale :List of 1
  .. .. .. ..$ FUN: chr "tmapScaleAuto"
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_scale_auto" "tm_scale" "list"
  .. .. ..$ legend:List of 6
  .. .. .. ..$ title     : logi NA
  .. .. .. ..$ xlab      : logi NA
  .. .. .. ..$ ylab      : logi NA
  .. .. .. ..$ group_id  : chr NA
  .. .. .. ..$ group_type: chr "tm_legend"
  .. .. .. ..$ z         : int NA
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_legend" "tm_component" "list"
  .. .. ..$ chart :List of 4
  .. .. .. ..$ show    : logi FALSE
  .. .. .. ..$ group_id: chr NA
  .. .. .. ..$ z       : int NA
  .. .. .. ..$ summary : chr "none"
  .. .. .. ..- attr(*, "class")= chr [1:4] "tm_chart_none" "tm_chart" "tm_component" "list"
  .. .. ..$ free  : logi NA
  .. .. ..- attr(*, "class")= chr [1:2] "tmapScale" "list"
  .. ..$ lty       :List of 6
  .. .. ..$ aes   : chr "lty"
  .. .. ..$ value :List of 1
  .. .. .. ..$ : chr "value.const"
  .. .. .. ..- attr(*, "class")= chr "tmapOption"
  .. .. ..$ scale :List of 1
  .. .. .. ..$ FUN: chr "tmapScaleAuto"
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_scale_auto" "tm_scale" "list"
  .. .. ..$ legend:List of 6
  .. .. .. ..$ title     : logi NA
  .. .. .. ..$ xlab      : logi NA
  .. .. .. ..$ ylab      : logi NA
  .. .. .. ..$ group_id  : chr NA
  .. .. .. ..$ group_type: chr "tm_legend"
  .. .. .. ..$ z         : int NA
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_legend" "tm_component" "list"
  .. .. ..$ chart :List of 4
  .. .. .. ..$ show    : logi FALSE
  .. .. .. ..$ group_id: chr NA
  .. .. .. ..$ z       : int NA
  .. .. .. ..$ summary : chr "none"
  .. .. .. ..- attr(*, "class")= chr [1:4] "tm_chart_none" "tm_chart" "tm_component" "list"
  .. .. ..$ free  : logi NA
  .. .. ..- attr(*, "class")= chr [1:2] "tmapScale" "list"
  .. ..$ fill_alpha:List of 6
  .. .. ..$ aes   : chr "fill_alpha"
  .. .. ..$ value :List of 1
  .. .. .. ..$ : chr "value.const"
  .. .. .. ..- attr(*, "class")= chr "tmapOption"
  .. .. ..$ scale :List of 1
  .. .. .. ..$ FUN: chr "tmapScaleAuto"
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_scale_auto" "tm_scale" "list"
  .. .. ..$ legend:List of 6
  .. .. .. ..$ title     : logi NA
  .. .. .. ..$ xlab      : logi NA
  .. .. .. ..$ ylab      : logi NA
  .. .. .. ..$ group_id  : chr NA
  .. .. .. ..$ group_type: chr "tm_legend"
  .. .. .. ..$ z         : int NA
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_legend" "tm_component" "list"
  .. .. ..$ chart :List of 4
  .. .. .. ..$ show    : logi FALSE
  .. .. .. ..$ group_id: chr NA
  .. .. .. ..$ z       : int NA
  .. .. .. ..$ summary : chr "none"
  .. .. .. ..- attr(*, "class")= chr [1:4] "tm_chart_none" "tm_chart" "tm_component" "list"
  .. .. ..$ free  : logi NA
  .. .. ..- attr(*, "class")= chr [1:2] "tmapScale" "list"
  .. ..$ col_alpha :List of 6
  .. .. ..$ aes   : chr "col_alpha"
  .. .. ..$ value :List of 1
  .. .. .. ..$ : chr "value.const"
  .. .. .. ..- attr(*, "class")= chr "tmapOption"
  .. .. ..$ scale :List of 1
  .. .. .. ..$ FUN: chr "tmapScaleAuto"
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_scale_auto" "tm_scale" "list"
  .. .. ..$ legend:List of 6
  .. .. .. ..$ title     : logi NA
  .. .. .. ..$ xlab      : logi NA
  .. .. .. ..$ ylab      : logi NA
  .. .. .. ..$ group_id  : chr NA
  .. .. .. ..$ group_type: chr "tm_legend"
  .. .. .. ..$ z         : int NA
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_legend" "tm_component" "list"
  .. .. ..$ chart :List of 4
  .. .. .. ..$ show    : logi FALSE
  .. .. .. ..$ group_id: chr NA
  .. .. .. ..$ z       : int NA
  .. .. .. ..$ summary : chr "none"
  .. .. .. ..- attr(*, "class")= chr [1:4] "tm_chart_none" "tm_chart" "tm_component" "list"
  .. .. ..$ free  : logi NA
  .. .. ..- attr(*, "class")= chr [1:2] "tmapScale" "list"
  ..$ gpar          :List of 11
  .. ..$ fill      : chr "__fill"
  .. ..$ col       : chr "__col"
  .. ..$ shape     : logi NA
  .. ..$ size      : logi NA
  .. ..$ fill_alpha: chr "__fill_alpha"
  .. ..$ col_alpha : chr "__col_alpha"
  .. ..$ lty       : chr "__lty"
  .. ..$ lwd       : chr "__lwd"
  .. ..$ linejoin  : chr "round"
  .. ..$ lineend   : chr "round"
  .. ..$ pattern   : chr "fill"
  .. ..- attr(*, "class")= chr "tmapGpar"
  ..$ tpar          :List of 1
  .. ..$ area: chr "AREA"
  .. ..- attr(*, "class")= chr "tmapTpar"
  ..$ plot.order    :List of 5
  .. ..$ aes          : chr "lwd"
  .. ..$ reverse      : logi TRUE
  .. ..$ na.order     : chr "bottom"
  .. ..$ null.order   : chr "bottom"
  .. ..$ null.below.na: logi TRUE
  .. ..- attr(*, "class")= chr "tm_plot_order"
  ..$ mapping.args  : list()
  ..$ zindex        : logi NA
  ..$ group         : logi NA
  ..$ group.control : chr "check"
  ..$ popup.vars    : logi FALSE
  ..$ popup.format  : list()
  .. ..- attr(*, "class")= chr [1:2] "tmapLabelFormat" "list"
  ..$ hover         : logi FALSE
  ..$ id            : chr ""
  ..- attr(*, "class")= chr [1:4] "tm_aes_layer" "tm_layer" "tm_element" "list"
 $ :List of 7
  ..$ shp     :Classes 'sf' and 'data.frame':   52 obs. of  10 variables:
  .. ..$ STATEFP : chr [1:52] "24" "19" "10" "39" ...
  .. ..$ STATENS : chr [1:52] "01714934" "01779785" "01779781" "01085497" ...
  .. ..$ AFFGEOID: chr [1:52] "0400000US24" "0400000US19" "0400000US10" "0400000US39" ...
  .. ..$ GEOID   : chr [1:52] "24" "19" "10" "39" ...
  .. ..$ STUSPS  : chr [1:52] "MD" "IA" "DE" "OH" ...
  .. ..$ NAME    : chr [1:52] "Maryland" "Iowa" "Delaware" "Ohio" ...
  .. ..$ LSAD    : chr [1:52] "00" "00" "00" "00" ...
  .. ..$ ALAND   : num [1:52] 2.52e+10 1.45e+11 5.05e+09 1.06e+11 1.16e+11 ...
  .. ..$ AWATER  : num [1:52] 6.98e+09 1.08e+09 1.40e+09 1.03e+10 3.39e+09 ...
  .. ..$ geometry:sfc_MULTIPOLYGON of length 52; first list element: List of 2
  .. .. ..$ :List of 1
  .. .. .. ..$ : num [1:6, 1:2] -76 -76 -76 -76 -76 ...
  .. .. ..$ :List of 1
  .. .. .. ..$ : num [1:261, 1:2] -79.5 -79.5 -79.5 -79.4 -79 ...
  .. .. ..- attr(*, "class")= chr [1:3] "XY" "MULTIPOLYGON" "sfg"
  .. ..- attr(*, "sf_column")= chr "geometry"
  .. ..- attr(*, "agr")= Factor w/ 3 levels "constant","aggregate",..: NA NA NA NA NA NA NA NA NA
  .. .. ..- attr(*, "names")= chr [1:9] "STATEFP" "STATENS" "AFFGEOID" "GEOID" ...
  ..$ is.main : logi NA
  ..$ crs     : NULL
  ..$ bbox    :List of 1
  .. ..$ x: NULL
  ..$ unit    : NULL
  ..$ filter  : NULL
  ..$ shp_name: chr "states"
  ..- attr(*, "class")= chr [1:3] "tm_shape" "tm_element" "list"
 $ :List of 17
  ..$ layer         : chr [1:2] "borders" "polygons"
  ..$ trans.fun     :function (shpTM, ord__, plot.order, args, scale)  
  ..$ trans.args    :List of 1
  .. ..$ polygons.only: chr "ifany"
  ..$ trans.aes     : list()
  ..$ trans.apply_to: chr "this"
  ..$ mapping.aes   :List of 6
  .. ..$ fill      :List of 6
  .. .. ..$ aes   : chr "fill"
  .. .. ..$ value :List of 1
  .. .. .. ..$ : chr "value.blank"
  .. .. .. ..- attr(*, "class")= chr "tmapOption"
  .. .. ..$ scale :List of 1
  .. .. .. ..$ FUN: chr "tmapScaleAuto"
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_scale_auto" "tm_scale" "list"
  .. .. ..$ legend:List of 6
  .. .. .. ..$ title     : logi NA
  .. .. .. ..$ xlab      : logi NA
  .. .. .. ..$ ylab      : logi NA
  .. .. .. ..$ group_id  : chr NA
  .. .. .. ..$ group_type: chr "tm_legend"
  .. .. .. ..$ z         : int NA
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_legend" "tm_component" "list"
  .. .. ..$ chart :List of 4
  .. .. .. ..$ show    : logi FALSE
  .. .. .. ..$ group_id: chr NA
  .. .. .. ..$ z       : int NA
  .. .. .. ..$ summary : chr "none"
  .. .. .. ..- attr(*, "class")= chr [1:4] "tm_chart_none" "tm_chart" "tm_component" "list"
  .. .. ..$ free  : logi NA
  .. .. ..- attr(*, "class")= chr [1:2] "tmapScale" "list"
  .. ..$ col       :List of 6
  .. .. ..$ aes   : chr "col"
  .. .. ..$ value :List of 1
  .. .. .. ..$ : chr "value.const"
  .. .. .. ..- attr(*, "class")= chr "tmapOption"
  .. .. ..$ scale :List of 1
  .. .. .. ..$ FUN: chr "tmapScaleAuto"
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_scale_auto" "tm_scale" "list"
  .. .. ..$ legend:List of 6
  .. .. .. ..$ title     : logi NA
  .. .. .. ..$ xlab      : logi NA
  .. .. .. ..$ ylab      : logi NA
  .. .. .. ..$ group_id  : chr NA
  .. .. .. ..$ group_type: chr "tm_legend"
  .. .. .. ..$ z         : int NA
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_legend" "tm_component" "list"
  .. .. ..$ chart :List of 4
  .. .. .. ..$ show    : logi FALSE
  .. .. .. ..$ group_id: chr NA
  .. .. .. ..$ z       : int NA
  .. .. .. ..$ summary : chr "none"
  .. .. .. ..- attr(*, "class")= chr [1:4] "tm_chart_none" "tm_chart" "tm_component" "list"
  .. .. ..$ free  : logi NA
  .. .. ..- attr(*, "class")= chr [1:2] "tmapScale" "list"
  .. ..$ lwd       :List of 6
  .. .. ..$ aes   : chr "lwd"
  .. .. ..$ value :List of 1
  .. .. .. ..$ : chr "value.const"
  .. .. .. ..- attr(*, "class")= chr "tmapOption"
  .. .. ..$ scale :List of 1
  .. .. .. ..$ FUN: chr "tmapScaleAuto"
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_scale_auto" "tm_scale" "list"
  .. .. ..$ legend:List of 6
  .. .. .. ..$ title     : logi NA
  .. .. .. ..$ xlab      : logi NA
  .. .. .. ..$ ylab      : logi NA
  .. .. .. ..$ group_id  : chr NA
  .. .. .. ..$ group_type: chr "tm_legend"
  .. .. .. ..$ z         : int NA
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_legend" "tm_component" "list"
  .. .. ..$ chart :List of 4
  .. .. .. ..$ show    : logi FALSE
  .. .. .. ..$ group_id: chr NA
  .. .. .. ..$ z       : int NA
  .. .. .. ..$ summary : chr "none"
  .. .. .. ..- attr(*, "class")= chr [1:4] "tm_chart_none" "tm_chart" "tm_component" "list"
  .. .. ..$ free  : logi NA
  .. .. ..- attr(*, "class")= chr [1:2] "tmapScale" "list"
  .. ..$ lty       :List of 6
  .. .. ..$ aes   : chr "lty"
  .. .. ..$ value :List of 1
  .. .. .. ..$ : chr "value.const"
  .. .. .. ..- attr(*, "class")= chr "tmapOption"
  .. .. ..$ scale :List of 1
  .. .. .. ..$ FUN: chr "tmapScaleAuto"
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_scale_auto" "tm_scale" "list"
  .. .. ..$ legend:List of 6
  .. .. .. ..$ title     : logi NA
  .. .. .. ..$ xlab      : logi NA
  .. .. .. ..$ ylab      : logi NA
  .. .. .. ..$ group_id  : chr NA
  .. .. .. ..$ group_type: chr "tm_legend"
  .. .. .. ..$ z         : int NA
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_legend" "tm_component" "list"
  .. .. ..$ chart :List of 4
  .. .. .. ..$ show    : logi FALSE
  .. .. .. ..$ group_id: chr NA
  .. .. .. ..$ z       : int NA
  .. .. .. ..$ summary : chr "none"
  .. .. .. ..- attr(*, "class")= chr [1:4] "tm_chart_none" "tm_chart" "tm_component" "list"
  .. .. ..$ free  : logi NA
  .. .. ..- attr(*, "class")= chr [1:2] "tmapScale" "list"
  .. ..$ fill_alpha:List of 6
  .. .. ..$ aes   : chr "fill_alpha"
  .. .. ..$ value :List of 1
  .. .. .. ..$ : chr "value.const"
  .. .. .. ..- attr(*, "class")= chr "tmapOption"
  .. .. ..$ scale :List of 1
  .. .. .. ..$ FUN: chr "tmapScaleAuto"
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_scale_auto" "tm_scale" "list"
  .. .. ..$ legend:List of 6
  .. .. .. ..$ title     : logi NA
  .. .. .. ..$ xlab      : logi NA
  .. .. .. ..$ ylab      : logi NA
  .. .. .. ..$ group_id  : chr NA
  .. .. .. ..$ group_type: chr "tm_legend"
  .. .. .. ..$ z         : int NA
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_legend" "tm_component" "list"
  .. .. ..$ chart :List of 4
  .. .. .. ..$ show    : logi FALSE
  .. .. .. ..$ group_id: chr NA
  .. .. .. ..$ z       : int NA
  .. .. .. ..$ summary : chr "none"
  .. .. .. ..- attr(*, "class")= chr [1:4] "tm_chart_none" "tm_chart" "tm_component" "list"
  .. .. ..$ free  : logi NA
  .. .. ..- attr(*, "class")= chr [1:2] "tmapScale" "list"
  .. ..$ col_alpha :List of 6
  .. .. ..$ aes   : chr "col_alpha"
  .. .. ..$ value :List of 1
  .. .. .. ..$ : chr "value.const"
  .. .. .. ..- attr(*, "class")= chr "tmapOption"
  .. .. ..$ scale :List of 1
  .. .. .. ..$ FUN: chr "tmapScaleAuto"
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_scale_auto" "tm_scale" "list"
  .. .. ..$ legend:List of 6
  .. .. .. ..$ title     : logi NA
  .. .. .. ..$ xlab      : logi NA
  .. .. .. ..$ ylab      : logi NA
  .. .. .. ..$ group_id  : chr NA
  .. .. .. ..$ group_type: chr "tm_legend"
  .. .. .. ..$ z         : int NA
  .. .. .. ..- attr(*, "class")= chr [1:3] "tm_legend" "tm_component" "list"
  .. .. ..$ chart :List of 4
  .. .. .. ..$ show    : logi FALSE
  .. .. .. ..$ group_id: chr NA
  .. .. .. ..$ z       : int NA
  .. .. .. ..$ summary : chr "none"
  .. .. .. ..- attr(*, "class")= chr [1:4] "tm_chart_none" "tm_chart" "tm_component" "list"
  .. .. ..$ free  : logi NA
  .. .. ..- attr(*, "class")= chr [1:2] "tmapScale" "list"
  ..$ gpar          :List of 11
  .. ..$ fill      : chr "__fill"
  .. ..$ col       : chr "__col"
  .. ..$ shape     : logi NA
  .. ..$ size      : logi NA
  .. ..$ fill_alpha: chr "__fill_alpha"
  .. ..$ col_alpha : chr "__col_alpha"
  .. ..$ lty       : chr "__lty"
  .. ..$ lwd       : chr "__lwd"
  .. ..$ linejoin  : chr "round"
  .. ..$ lineend   : chr "round"
  .. ..$ pattern   : chr "fill"
  .. ..- attr(*, "class")= chr "tmapGpar"
  ..$ tpar          :List of 1
  .. ..$ area: chr "AREA"
  .. ..- attr(*, "class")= chr "tmapTpar"
  ..$ plot.order    :List of 5
  .. ..$ aes          : chr "lwd"
  .. ..$ reverse      : logi TRUE
  .. ..$ na.order     : chr "bottom"
  .. ..$ null.order   : chr "bottom"
  .. ..$ null.below.na: logi TRUE
  .. ..- attr(*, "class")= chr "tm_plot_order"
  ..$ mapping.args  : list()
  ..$ zindex        : logi NA
  ..$ group         : logi NA
  ..$ group.control : chr "check"
  ..$ popup.vars    : logi FALSE
  ..$ popup.format  : list()
  .. ..- attr(*, "class")= chr [1:2] "tmapLabelFormat" "list"
  ..$ hover         : logi FALSE
  ..$ id            : chr ""
  ..- attr(*, "class")= chr [1:4] "tm_aes_layer" "tm_layer" "tm_element" "list"
 $ :List of 2
  ..$ title.position: chr [1:2] "right" "TOP"
  ..$ calls         : chr [1:3] "title.position" "title" "called_from"
  ..- attr(*, "class")= chr [1:3] "tm_options" "tm_element" "list"
 $ :List of 6
  ..$ text      : chr "CAMELS Watersheds"
  ..$ position  : chr [1:2] "right" "TOP"
  ..$ called    : chr [1:2] "text" "position"
  ..$ group_id  : chr NA
  ..$ group_type: chr [1:2] "tm_<other>" "tm_title"
  ..$ z         : int NA
  ..- attr(*, "class")= chr [1:4] "tm_title" "tm_component" "tm_element" "list"
 $ :List of 5
  ..$ args         :List of 8
  .. ..$ server         : chr "OpenTopoMap"
  .. ..$ alpha          : NULL
  .. ..$ zoom           : NULL
  .. ..$ api            : NULL
  .. ..$ max.native.zoom: num 17
  .. ..$ sub            : chr "abc"
  .. ..$ type           : chr "basemap"
  .. ..$ disable        : logi FALSE
  ..$ mapping.fun  : chr "tm_aux_basemap"
  ..$ zindex       : num 0
  ..$ group        : logi NA
  ..$ group.control: chr "radio"
  ..- attr(*, "class")= chr [1:4] "tm_basemap" "tm_aux_layer" "tm_element" "list"
 - attr(*, "class")= chr "tmap"
NULL

Leaflet

Leaflet is another way to make interactive maps. It’s syntax is very different, as you can see below. But depending on what functionality you need, it could be a better choice.

# Assign the leaflet plot to a variable
leaflet_map <- leaflet(watersheds_info) |>
  addTiles() |>
  addPolygons(color = "#444444", weight = 1, smoothFactor = 0.5,
    opacity = 1.0, fillOpacity = 0.5,
    fillColor = ~colorQuantile("YlOrRd", elev_mean)(elev_mean))

# # Save the interactive map to a temporary HTML file using htmlwidgets
# library(htmlwidgets)
# leaflet_map_fp <- "images/leaflet_interactive.html"
# htmlwidgets::saveWidget(leaflet_map, file = leaflet_map_fp, selfcontained = TRUE)

leaflet_map
print(str(leaflet_map))
Warning message:
"sf layer has inconsistent datum (+proj=longlat +datum=NAD83 +no_defs).
Need '+proj=longlat +datum=WGS84'"
List of 8
 $ x            :List of 3
  ..$ options:List of 1
  .. ..$ crs:List of 5
  .. .. ..$ crsClass       : chr "L.CRS.EPSG3857"
  .. .. ..$ code           : NULL
  .. .. ..$ proj4def       : NULL
  .. .. ..$ projectedBounds: NULL
  .. .. ..$ options        : Named list()
  .. .. ..- attr(*, "class")= chr "leaflet_crs"
  ..$ calls  :List of 2
  .. ..$ :List of 2
  .. .. ..$ method: chr "addTiles"
  .. .. ..$ args  :List of 4
  .. .. .. ..$ : chr "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
  .. .. .. ..$ : NULL
  .. .. .. ..$ : NULL
  .. .. .. ..$ :List of 13
  .. .. .. .. ..$ minZoom     : num 0
  .. .. .. .. ..$ maxZoom     : num 18
  .. .. .. .. ..$ tileSize    : num 256
  .. .. .. .. ..$ subdomains  : chr "abc"
  .. .. .. .. ..$ errorTileUrl: chr ""
  .. .. .. .. ..$ tms         : logi FALSE
  .. .. .. .. ..$ noWrap      : logi FALSE
  .. .. .. .. ..$ zoomOffset  : num 0
  .. .. .. .. ..$ zoomReverse : logi FALSE
  .. .. .. .. ..$ opacity     : num 1
  .. .. .. .. ..$ zIndex      : num 1
  .. .. .. .. ..$ detectRetina: logi FALSE
  .. .. .. .. ..$ attribution : chr "&copy; <a href=\"https://openstreetmap.org/copyright/\">OpenStreetMap</a>,  <a href=\"https://opendatacommons.o"| __truncated__
  .. ..$ :List of 2
  .. .. ..$ method: chr "addPolygons"
  .. .. ..$ args  :List of 9
  .. .. .. ..$ :List of 671
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  877 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:877] -68.1 -68.1 -68.1 -68 -68 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:877] 47.2 47.2 47.2 47.2 47.2 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  452 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:452] -68 -68 -68 -68 -68 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:452] 44.6 44.6 44.6 44.6 44.6 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  934 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:934] -68.1 -68.1 -68.1 -68.1 -68.1 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:934] 46.1 46.1 46.1 46.1 46.1 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  415 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:415] -69.3 -69.3 -69.3 -69.3 -69.3 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:415] 45.2 45.2 45.1 45.1 45.1 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  407 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:407] -70.1 -70.1 -70.1 -70.1 -70.1 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:407] 45.2 45.2 45.2 45.2 45.2 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  226 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:226] -71.1 -71.1 -71.1 -71.1 -71.1 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:226] 45.1 45.1 45.1 45.1 45.1 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  164 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:164] -71 -71 -71 -71 -71 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:164] 44.4 44.4 44.4 44.4 44.4 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  186 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:186] -70.8 -70.8 -70.8 -70.8 -70.8 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:186] 44.8 44.8 44.8 44.8 44.8 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  160 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:160] -70.6 -70.6 -70.6 -70.6 -70.5 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:160] 44.4 44.4 44.4 44.4 44.4 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  95 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:95] -70.9 -70.9 -71 -70.9 -71 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:95] 43.2 43.2 43.2 43.2 43.2 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  213 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:213] -71.9 -71.9 -71.9 -71.9 -71.9 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:213] 43.6 43.6 43.6 43.6 43.6 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  50 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:50] -71.8 -71.8 -71.8 -71.8 -71.8 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:50] 41.5 41.5 41.5 41.5 41.5 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  149 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:149] -72.2 -72.2 -72.2 -72.2 -72.2 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:149] 41.8 41.8 41.8 41.8 41.8 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  133 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:133] -72 -72 -72 -72 -72 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:133] 41.8 41.8 41.8 41.8 41.8 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  166 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:166] -71.8 -71.8 -71.8 -71.8 -71.8 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:166] 44.7 44.7 44.7 44.7 44.7 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  191 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:191] -71.3 -71.3 -71.3 -71.3 -71.3 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:191] 44.3 44.3 44.3 44.3 44.3 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  218 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:218] -72.2 -72.2 -72.2 -72.2 -72.2 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:218] 44.3 44.3 44.3 44.3 44.3 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  53 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:53] -72.3 -72.3 -72.3 -72.3 -72.3 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:53] 44.1 44.1 44.1 44.1 44.1 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  90 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:90] -72.6 -72.6 -72.6 -72.6 -72.6 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:90] 44 44 44 44 44 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  517 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:517] -72.7 -72.7 -72.7 -72.7 -72.7 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:517] 44 44 44 44 44 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  123 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:123] -72.1 -72.1 -72.1 -72.1 -72.1 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:123] 42.7 42.7 42.7 42.7 42.7 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  170 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:170] -72.7 -72.7 -72.7 -72.7 -72.7 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:170] 42.7 42.7 42.7 42.7 42.7 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  133 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:133] -72.7 -72.7 -72.7 -72.7 -72.7 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:133] 42.7 42.7 42.7 42.7 42.7 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  225 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:225] -73 -73 -73 -73 -73 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:225] 42.4 42.4 42.4 42.4 42.4 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  94 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:94] -72.9 -72.9 -72.9 -72.9 -72.9 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:94] 42.1 42.1 42.1 42.1 42.1 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  50 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:50] -72.5 -72.5 -72.5 -72.5 -72.5 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:50] 41.3 41.3 41.3 41.3 41.3 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  115 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:115] -73.2 -73.2 -73.2 -73.2 -73.2 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:115] 42.7 42.7 42.7 42.7 42.7 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  236 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:236] -74.4 -74.4 -74.4 -74.4 -74.4 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:236] 42.2 42.2 42.2 42.2 42.2 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  85 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:85] -74.3 -74.3 -74.3 -74.3 -74.3 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:85] 42.4 42.4 42.4 42.4 42.4 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  79 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:79] -74.6 -74.6 -74.6 -74.6 -74.6 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:79] 42.4 42.4 42.4 42.4 42.4 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  109 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:109] -74.4 -74.4 -74.4 -74.4 -74.3 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:109] 42 42 42 42 42 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  136 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:136] -74.9 -74.9 -74.9 -74.9 -74.9 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:136] 39.4 39.4 39.4 39.4 39.4 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  244 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:244] -74.5 -74.5 -74.5 -74.5 -74.5 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:244] 42.3 42.3 42.3 42.3 42.3 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  90 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:90] -74.6 -74.6 -74.6 -74.6 -74.6 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:90] 42 42 42 42 42 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  96 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:96] -74.7 -74.7 -74.7 -74.7 -74.7 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:96] 42.2 42.2 42.2 42.2 42.2 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  408 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:408] -75.1 -75.1 -75.1 -75.1 -75.1 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:408] 42.3 42.3 42.3 42.3 42.3 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  25 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:25] -74.5 -74.5 -74.5 -74.5 -74.5 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:25] 42 42 42 42 42 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  144 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:144] -74.5 -74.5 -74.5 -74.5 -74.5 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:144] 41.9 41.9 41.9 41.9 41.9 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  245 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:245] -75.2 -75.2 -75.2 -75.2 -75.2 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:245] 41.3 41.3 41.3 41.3 41.3 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  186 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:186] -74.7 -74.7 -74.7 -74.7 -74.7 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:186] 41.3 41.3 41.3 41.3 41.3 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  176 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:176] -75.2 -75.2 -75.2 -75.2 -75.2 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:176] 41.1 41.1 41.1 41.1 41.1 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  163 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:163] -75.7 -75.7 -75.7 -75.7 -75.7 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:163] 40.7 40.7 40.7 40.7 40.7 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  30 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:30] -74.5 -74.5 -74.5 -74.5 -74.5 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:30] 39.9 39.9 39.9 39.9 39.9 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  41 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:41] -75.5 -75.5 -75.5 -75.5 -75.5 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:41] 38.9 38.9 38.9 38.9 38.9 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  125 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:125] -75.4 -75.4 -75.4 -75.4 -75.4 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:125] 38.3 38.3 38.2 38.2 38.2 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  57 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:57] -75.6 -75.6 -75.6 -75.6 -75.6 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:57] 38.2 38.2 38.2 38.2 38.2 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  176 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:176] -75.5 -75.5 -75.5 -75.5 -75.5 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:176] 38.9 38.9 38.9 38.9 38.9 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  198 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:198] -75.6 -75.6 -75.6 -75.6 -75.6 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:198] 39 39 39 39 39 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  294 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:294] -75.7 -75.7 -75.7 -75.7 -75.7 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:294] 42.7 42.7 42.7 42.7 42.7 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  64 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:64] -76.9 -76.9 -76.9 -76.9 -76.9 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:64] 41.7 41.7 41.7 41.7 41.7 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  215 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:215] -77.5 -77.5 -77.5 -77.5 -77.5 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:215] 41.8 41.8 41.8 41.8 41.8 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  300 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:300] -76.7 -76.7 -76.7 -76.7 -76.7 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:300] 41.7 41.7 41.7 41.7 41.7 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  341 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:341] -76.5 -76.5 -76.5 -76.5 -76.5 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:341] 41.3 41.3 41.3 41.3 41.3 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  49 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:49] -78.3 -78.3 -78.3 -78.3 -78.3 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:49] 41.6 41.6 41.6 41.6 41.6 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  390 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:390] -78.3 -78.3 -78.3 -78.3 -78.3 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:390] 41.6 41.6 41.6 41.6 41.6 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  619 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:619] -78.1 -78.1 -78.1 -78.1 -78.1 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:619] 41.3 41.3 41.3 41.3 41.3 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  227 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:227] -77.8 -77.8 -77.8 -77.8 -77.8 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:227] 41.6 41.6 41.7 41.7 41.7 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  148 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:148] -77.7 -77.7 -77.7 -77.7 -77.7 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:148] 41.5 41.5 41.5 41.5 41.5 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  146 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:146] -77.7 -77.7 -77.7 -77.7 -77.7 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:146] 41.1 41.1 41.1 41.1 41.1 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  589 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:589] -77.8 -77.8 -77.8 -77.8 -77.8 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:589] 41.6 41.6 41.6 41.6 41.6 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  149 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:149] -77.1 -77.1 -77.1 -77.1 -77.1 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:149] 41.6 41.6 41.6 41.6 41.6 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  256 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:256] -76.8 -76.8 -76.8 -76.8 -76.8 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:256] 41.6 41.6 41.6 41.6 41.5 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  494 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:494] -76.2 -76.2 -76.2 -76.2 -76.2 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:494] 41.5 41.5 41.5 41.5 41.5 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  104 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:104] -76.4 -76.4 -76.4 -76.4 -76.4 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:104] 41.4 41.4 41.4 41.4 41.4 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  110 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:110] -78.1 -78.1 -78.1 -78.1 -78.2 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:110] 40.7 40.7 40.7 40.7 40.7 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  61 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:61] -77.4 -77.4 -77.4 -77.4 -77.4 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:61] 40.4 40.4 40.4 40.4 40.4 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  282 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:282] -77.6 -77.6 -77.6 -77.6 -77.6 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:282] 40.2 40.2 40.2 40.2 40.2 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  212 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:212] -76.6 -76.6 -76.6 -76.6 -76.6 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:212] 39.8 39.8 39.8 39.8 39.8 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  152 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:152] -76.8 -76.8 -76.8 -76.8 -76.8 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:152] 39.6 39.6 39.6 39.6 39.6 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  108 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:108] -77 -77 -77 -77 -77 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:108] 39.5 39.5 39.5 39.5 39.5 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  69 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:69] -77 -77 -77 -77 -77 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:69] 39.3 39.3 39.3 39.3 39.3 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  28 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:28] -79.4 -79.4 -79.4 -79.4 -79.4 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:28] 39.3 39.3 39.3 39.3 39.3 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  127 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:127] -79.2 -79.2 -79.2 -79.2 -79.2 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:127] 39.6 39.6 39.6 39.6 39.6 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  248 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:248] -79.3 -79.3 -79.3 -79.3 -79.3 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:248] 38.6 38.6 38.6 38.6 38.6 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  597 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:597] -79.3 -79.3 -79.3 -79.3 -79.3 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:597] 38.6 38.6 38.6 38.6 38.6 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  48 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:48] -78.1 -78.1 -78.1 -78.1 -78.1 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:48] 39.9 39.9 39.9 39.9 39.9 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  102 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:102] -79.2 -79.3 -79.3 -79.3 -79.3 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:102] 38.5 38.4 38.4 38.4 38.4 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  237 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:237] -79 -79 -79 -79 -79 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:237] 38.9 38.9 38.9 38.9 38.9 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  193 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:193] -78.9 -78.9 -78.9 -78.9 -78.9 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:193] 38.5 38.5 38.5 38.5 38.5 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  185 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:185] -78.4 -78.4 -78.4 -78.4 -78.4 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:185] 39.2 39.2 39.2 39.2 39.2 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  162 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:162] -77.6 -77.6 -77.6 -77.6 -77.6 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:162] 39.1 39.1 39.1 39.1 39.1 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  182 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:182] -77 -77 -77 -77 -77 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:182] 39.7 39.7 39.7 39.7 39.7 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  361 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:361] -77.6 -77.6 -77.6 -77.6 -77.6 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:361] 39.1 39.1 39.1 39.1 39.1 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  56 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:56] -77.4 -77.4 -77.4 -77.4 -77.4 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:56] 38.6 38.6 38.6 38.6 38.6 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  499 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:499] -77.9 -77.8 -77.8 -77.8 -77.8 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:499] 38.9 38.9 38.9 38.9 38.9 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  288 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:288] -78.3 -78.3 -78.3 -78.3 -78.3 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:288] 38.3 38.3 38.3 38.3 38.4 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  434 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:434] -78.1 -78.1 -78.1 -78.1 -78.1 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:434] 38.5 38.5 38.5 38.5 38.5 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  106 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:106] -76.9 -76.9 -76.9 -76.9 -76.9 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:106] 37.8 37.8 37.8 37.8 37.8 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  262 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:262] -76.8 -76.8 -76.8 -76.8 -76.8 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:262] 37.8 37.8 37.8 37.8 37.8 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  256 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:256] -79.6 -79.6 -79.6 -79.6 -79.6 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:256] 38.4 38.4 38.4 38.4 38.4 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  227 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:227] -79.6 -79.6 -79.6 -79.6 -79.6 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:227] 38.5 38.5 38.5 38.5 38.4 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  269 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:269] -80.1 -80.1 -80.1 -80.1 -80.1 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:269] 37.7 37.7 37.7 37.7 37.7 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  252 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:252] -79.9 -79.9 -79.9 -80 -80 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:252] 37.7 37.7 37.7 37.7 37.7 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  213 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:213] -79.5 -79.5 -79.5 -79.5 -79.5 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:213] 38.3 38.3 38.3 38.3 38.3 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  488 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:488] -79.4 -79.4 -79.4 -79.4 -79.4 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:488] 38.4 38.4 38.4 38.4 38.4 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  204 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:204] -80.2 -80.2 -80.2 -80.2 -80.2 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:204] 37.5 37.5 37.5 37.5 37.5 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  423 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:423] -80.2 -80.2 -80.2 -80.2 -80.3 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:423] 37.5 37.5 37.5 37.5 37.5 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  207 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:207] -79 -79 -79 -79 -79 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:207] 37.9 37.9 37.9 37.9 37.9 ...
  .. .. .. .. ..$ :List of 1
  .. .. .. .. .. ..$ :List of 1
  .. .. .. .. .. .. ..$ :'data.frame':  139 obs. of  2 variables:
  .. .. .. .. .. .. .. ..$ lng: num [1:139] -79 -79.1 -79.1 -79.1 -79.1 ...
  .. .. .. .. .. .. .. ..$ lat: num [1:139] 37.8 37.8 37.8 37.8 37.7 ...
  .. .. .. .. .. [list output truncated]
  .. .. .. .. ..- attr(*, "bbox")= num [1:2, 1:2] -124.4 27 -67.7 49
  .. .. .. .. .. ..- attr(*, "dimnames")=List of 2
  .. .. .. .. .. .. ..$ : chr [1:2] "lng" "lat"
  .. .. .. .. .. .. ..$ : NULL
  .. .. .. ..$ : NULL
  .. .. .. ..$ : NULL
  .. .. .. ..$ :List of 11
  .. .. .. .. ..$ interactive : logi TRUE
  .. .. .. .. ..$ className   : chr ""
  .. .. .. .. ..$ stroke      : logi TRUE
  .. .. .. .. ..$ color       : chr "#444444"
  .. .. .. .. ..$ weight      : num 1
  .. .. .. .. ..$ opacity     : num 1
  .. .. .. .. ..$ fill        : logi TRUE
  .. .. .. .. ..$ fillColor   : chr [1:671] "#FECC5C" "#FFFFB2" "#FFFFB2" "#FECC5C" ...
  .. .. .. .. ..$ fillOpacity : num 0.5
  .. .. .. .. ..$ smoothFactor: num 0.5
  .. .. .. .. ..$ noClip      : logi FALSE
  .. .. .. ..$ : NULL
  .. .. .. ..$ : NULL
  .. .. .. ..$ : NULL
  .. .. .. ..$ :List of 9
  .. .. .. .. ..$ interactive: logi FALSE
  .. .. .. .. ..$ permanent  : logi FALSE
  .. .. .. .. ..$ direction  : chr "auto"
  .. .. .. .. ..$ opacity    : num 1
  .. .. .. .. ..$ offset     : num [1:2] 0 0
  .. .. .. .. ..$ textsize   : chr "10px"
  .. .. .. .. ..$ textOnly   : logi FALSE
  .. .. .. .. ..$ className  : chr ""
  .. .. .. .. ..$ sticky     : logi TRUE
  .. .. .. ..$ : NULL
  ..$ limits :List of 2
  .. ..$ lat: num [1:2] 27 49
  .. ..$ lng: num [1:2] -124.4 -67.7
  ..- attr(*, "leafletData")=Classes 'sf' and 'data.frame': 671 obs. of  17 variables:
  .. ..$ hru_id           : chr [1:671] "1013500" "1022500" "1030500" "1031500" ...
  .. ..$ ann_P            : num [1:671] 0 0 0 0 0 0 0 0 0 0 ...
  .. ..$ lon_cen          : num [1:671] -68.6 -68.1 -68.1 -69.6 -70.2 ...
  .. ..$ lat_cen          : num [1:671] 47 44.8 45.8 45.2 45 ...
  .. ..$ AREA             : num [1:671] 2.30e+09 6.20e+08 3.68e+09 7.67e+08 9.05e+08 ...
  .. ..$ elev_mean        : num [1:671] 277 104 174 305 380 ...
  .. ..$ ave_T            : num [1:671] NA NA NA NA NA NA NA NA NA NA ...
  .. ..$ july_T           : num [1:671] NA NA NA NA NA NA NA NA NA NA ...
  .. ..$ Perimeter        : chr [1:671] "647993" "312624" "662248" "309614" ...
  .. ..$ GAGE_ID          : chr [1:671] "01013500" "01022500" "01030500" "01031500" ...
  .. ..$ HUC_02           : chr [1:671] "01" "01" "01" "01" ...
  .. ..$ GAGE_NAME        : chr [1:671] "Fish River near Fort Kent, Maine" "Narraguagus River at Cherryfield, Maine" "Mattawamkeag River near Mattawamkeag, Maine" "Piscataquis River near Dover-Foxcroft, Maine" ...
  .. ..$ LAT              : num [1:671] 47.2 44.6 45.5 45.2 44.9 ...
  .. ..$ LONG             : num [1:671] -68.6 -67.9 -68.3 -69.3 -70 ...
  .. ..$ DRAINAGE_AREA_KM2: num [1:671] 2253 574 3676 769 909 ...
  .. ..$ Elevation_m      : num [1:671] 250.3 92.7 143.8 247.8 310.4 ...
  .. ..$ geometry         :sfc_MULTIPOLYGON of length 671; first list element: List of 1
  .. .. ..$ :List of 1
  .. .. .. ..$ : num [1:877, 1:2] -68.1 -68.1 -68.1 -68 -68 ...
  .. .. ..- attr(*, "class")= chr [1:3] "XY" "MULTIPOLYGON" "sfg"
  .. ..- attr(*, "sf_column")= chr "geometry"
  .. ..- attr(*, "agr")= Factor w/ 3 levels "constant","aggregate",..: NA NA NA NA NA NA NA NA NA NA ...
  .. .. ..- attr(*, "names")= chr [1:16] "hru_id" "ann_P" "lon_cen" "lat_cen" ...
 $ width        : NULL
 $ height       : NULL
 $ sizingPolicy :List of 7
  ..$ defaultWidth : chr "100%"
  ..$ defaultHeight: num 400
  ..$ padding      : num 0
  ..$ fill         : NULL
  ..$ viewer       :List of 6
  .. ..$ defaultWidth : NULL
  .. ..$ defaultHeight: NULL
  .. ..$ padding      : NULL
  .. ..$ fill         : logi TRUE
  .. ..$ suppress     : logi FALSE
  .. ..$ paneHeight   : NULL
  ..$ browser      :List of 5
  .. ..$ defaultWidth : NULL
  .. ..$ defaultHeight: NULL
  .. ..$ padding      : NULL
  .. ..$ fill         : logi TRUE
  .. ..$ external     : logi FALSE
  ..$ knitr        :List of 3
  .. ..$ defaultWidth : NULL
  .. ..$ defaultHeight: NULL
  .. ..$ figure       : logi TRUE
 $ dependencies :List of 7
  ..$ :List of 10
  .. ..$ name      : chr "jquery"
  .. ..$ version   : chr "3.6.0"
  .. ..$ src       :List of 1
  .. .. ..$ file: chr "lib/3.6.0"
  .. ..$ meta      : NULL
  .. ..$ script    : chr "jquery-3.6.0.min.js"
  .. ..$ stylesheet: NULL
  .. ..$ head      : NULL
  .. ..$ attachment: NULL
  .. ..$ package   : chr "jquerylib"
  .. ..$ all_files : logi TRUE
  .. ..- attr(*, "class")= chr "html_dependency"
  ..$ :List of 10
  .. ..$ name      : chr "leaflet"
  .. ..$ version   : chr "1.3.1"
  .. ..$ src       :List of 1
  .. .. ..$ file: chr "htmlwidgets/lib/leaflet"
  .. ..$ meta      : NULL
  .. ..$ script    : chr "leaflet.js"
  .. ..$ stylesheet: chr "leaflet.css"
  .. ..$ head      : NULL
  .. ..$ attachment: NULL
  .. ..$ package   : chr "leaflet"
  .. ..$ all_files : logi TRUE
  .. ..- attr(*, "class")= chr "html_dependency"
  ..$ :List of 10
  .. ..$ name      : chr "leafletfix"
  .. ..$ version   : chr "1.0.0"
  .. ..$ src       :List of 1
  .. .. ..$ file: chr "htmlwidgets/lib/leafletfix"
  .. ..$ meta      : NULL
  .. ..$ script    : NULL
  .. ..$ stylesheet: chr "leafletfix.css"
  .. ..$ head      : NULL
  .. ..$ attachment: NULL
  .. ..$ package   : chr "leaflet"
  .. ..$ all_files : logi TRUE
  .. ..- attr(*, "class")= chr "html_dependency"
  ..$ :List of 10
  .. ..$ name      : chr "proj4"
  .. ..$ version   : chr "2.6.2"
  .. ..$ src       :List of 1
  .. .. ..$ file: chr "htmlwidgets/plugins/Proj4Leaflet"
  .. ..$ meta      : NULL
  .. ..$ script    : chr "proj4.min.js"
  .. ..$ stylesheet: NULL
  .. ..$ head      : NULL
  .. ..$ attachment: NULL
  .. ..$ package   : chr "leaflet"
  .. ..$ all_files : logi FALSE
  .. ..- attr(*, "class")= chr "html_dependency"
  ..$ :List of 10
  .. ..$ name      : chr "Proj4Leaflet"
  .. ..$ version   : chr "1.0.1"
  .. ..$ src       :List of 1
  .. .. ..$ file: chr "htmlwidgets/plugins/Proj4Leaflet"
  .. ..$ meta      : NULL
  .. ..$ script    : chr "proj4leaflet.js"
  .. ..$ stylesheet: NULL
  .. ..$ head      : NULL
  .. ..$ attachment: NULL
  .. ..$ package   : chr "leaflet"
  .. ..$ all_files : logi FALSE
  .. ..- attr(*, "class")= chr "html_dependency"
  ..$ :List of 10
  .. ..$ name      : chr "rstudio_leaflet"
  .. ..$ version   : chr "1.3.1"
  .. ..$ src       :List of 1
  .. .. ..$ file: chr "htmlwidgets/lib/rstudio_leaflet"
  .. ..$ meta      : NULL
  .. ..$ script    : NULL
  .. ..$ stylesheet: chr "rstudio_leaflet.css"
  .. ..$ head      : NULL
  .. ..$ attachment: NULL
  .. ..$ package   : chr "leaflet"
  .. ..$ all_files : logi TRUE
  .. ..- attr(*, "class")= chr "html_dependency"
  ..$ :List of 10
  .. ..$ name      : chr "leaflet-binding"
  .. ..$ version   : chr "2.2.2"
  .. ..$ src       :List of 1
  .. .. ..$ file: chr "htmlwidgets/assets"
  .. ..$ meta      : NULL
  .. ..$ script    : chr "leaflet.js"
  .. ..$ stylesheet: NULL
  .. ..$ head      : NULL
  .. ..$ attachment: NULL
  .. ..$ package   : chr "leaflet"
  .. ..$ all_files : logi FALSE
  .. ..- attr(*, "class")= chr "html_dependency"
 $ elementId    : NULL
 $ preRenderHook:function (widget)  
 $ jsHooks      : list()
 - attr(*, "class")= chr [1:2] "leaflet" "htmlwidget"
 - attr(*, "package")= chr "leaflet"
NULL